Angular momentum#
What You Need to Know
Angular momentum is essential in both classical and quantum mechanics. In classical mechanics, all isolated systems conserve angular momentum (along with energy and linear momentum). This conservation law simplifies calculations for systems such as planetary orbits, rotations of rigid bodies, and many other dynamic systems.
In quantum mechanics, angular momentum is similarly fundamental, especially in understanding atomic structure and other systems with rotational symmetry.
Angular momentum in QM is represented by an operator—a vector operator, to be specific, much like the momentum operator.
However, unlike the linear momentum operator, the three components of the angular momentum operator do not commute.
L vs p Overview#
Property |
Linear Momentum |
Angular Momentum |
|---|---|---|
Nature |
Linear motion in a straight line |
Rotational motion around an axis |
Vector form |
\(\vec{p} = m \cdot \vec{v}\) |
\(\vec{L} = \vec{p}\times\vec{r}\) |
Scalar form |
\( |\vec{p}| = m \cdot v\) |
\( |\vec{L}| = I \cdot \omega\) |
Mass for point particles |
\(m\) |
\(I=mr^2\) |
Kinetic Energy |
\(\frac{p^2}{2m}\) |
\(\frac{L^2}{2I}\) |
QM operators |
\(\hat{p_x}=-i\hbar\frac{\partial}{\partial x}\) |
\({\hat{L_x} = yp_z - zp_y}\) |
Conservation Principle |
Law of Conservation of Linear Momentum |
Law of Conservation of Angular Momentum |
Conservation Condition |
No net external force acting on a closed system |
No net external torque acting on a closed system |
Classical angular momentum#
Fig. 71 Angular momemntum in classical mechanics is a vector quantity defined by the cross product of position vector and linear momentum. Direction is determined by using the thumb rule.#
In classical mechanics, the angular momentum is defined via a corss product of position and linear momentum. The cross product is convenient to write using a determinant:
where \(\vec{i}, \vec{j}\) and \(\vec{k}\) denote unit vectors along the \(x, y\) and \(z\) axes. \(p_x\) and \(L_x\) are components of linear and angular momentum respectively
The Cartesian components of angular momentum
Spherical coordinates#
Spherical coordinates are more convenient for rotational problems. We therefore replace \((x,y,z)\) by \((r, \phi, \theta)\). For instance: when considering rotation with \(r=const\) we are able to eliminate one degree of freedom associated with radial direction.
Fig. 72 Since we are going to work in spherical coordinate system we need to know how operators look in differnet cooridnate systems. This figure shows a rectangular volume element expressed in spherical coordinates.#
Geometric relations
The range of spherical variables
Volume Element
Laplacian
Example
Compute volume of cube and sphere using cartesian and spherical cooridnates by integrating volume elements
Solution
Example
Write down laplacian for a rigid rotor problem \(r=const\). Show what equations result when you separate the two angular variables by pluggin in \(\psi(r, \theta, \phi)\)
Solution
Quantum angular momentum#
In quantum mechanics, the classical angular momentum is replaced by the corresponding quantum mechanical operator.
In spherical coordinates, the angular momentum operators can be written in the following form. The derivations are quite tedious involving multiple applications of chain rule but its just a straightforward math procedure. Note that the choice of \(z\)-axis here was arbitrary. Sometimes the physical system implies such axis naturally (for example, the direction of an external magnetic field).
Components of angular momentum do not commute!#
Unlike linear momentum components of angular momentum do not commute!
This implies that it is not possible to measure any of the Cartesian angular momentum pairs simultaneously with an infinite precision (the Heisenberg uncertainty relation).
Note the cyclical nature of commutations between components
Eignefunctions and eigenvalues of \(L\) and \(L_z\)#
Since operators of component and angular momentum square commute is possible to find functions that are eigenfunctions of both \(\vec{\hat{L}}^2\) and \(\hat{L}_z\).
Eignefunctions and eigenvalues of angular momentum
Eigenfunctions: \(Y_l^m(\theta,\phi) \)
Angular quantum number: \(l = 0,1,2,3...\)
Magnetic quantum number: \(|m| = 0,1,2,3,...l\)
Note that here \(m\) has nothing to do with magnetism but the name originates from the fact that (electron or nuclear) spins follow the same laws of angular momentum.
Functions \(Y_l^m\) are called spherical harmonics. Examples of spherical harmonics with various values of \(l\) and \(m\) are given below (with Condon-Shortley phase convention
Spherical harmonics#
\(Y_{lm}(\theta, \phi)\) |
Expression |
|---|---|
\(Y_{00}(\theta, \phi)\) |
\(\frac{1}{\sqrt{4\pi}}\) |
\(Y_{10}(\theta, \phi)\) |
\(\sqrt{\frac{3}{4\pi}} \cos(\theta)\) |
\(Y_{1-1}(\theta, \phi)\) |
\(\sqrt{\frac{3}{4\pi}} \sin(\theta) e^{-i\phi}\) |
\(Y_{20}(\theta, \phi)\) |
\(\sqrt{\frac{5}{16\pi}} (3\cos^2(\theta) - 1)\) |
\(Y_{2-1}(\theta, \phi)\) |
\(\sqrt{\frac{15}{4\pi}} \sin(\theta) \cos(\theta) e^{-i\phi}\) |
\(Y_{2-2}(\theta, \phi)\) |
\(\sqrt{\frac{15}{4\pi}} \sin^2(\theta) e^{-2i\phi}\) |
The functions \(Y_{J,m}(\theta,\phi)\) are spherical harmonics that frequently occur in problems with spherical symmetry as the convenient basis of expansion. Spherical harmonics are important in many theoretical and practical applications, e.g., the representation of multipole electrostatic and electromagnetic fields, computation of atomic orbital electron configurations, representation of gravitational fields, MRI imaging for streamline tractography, and the magnetic fields of planetary bodies and stars.
Show code cell source
import matplotlib.pyplot as plt
from matplotlib import cm
import numpy as np
from scipy.special import sph_harm
from mpl_toolkits.mplot3d import Axes3D
# Define the range of m and l values for the first three spherical harmonics
harmonics = [(0, 1), (1, 1), (-1, 1)] # List of (m, l) pairs to plot
# Define theta and phi grids
phi = np.linspace(0, np.pi, 100) # colatitude
theta = np.linspace(0, 2 * np.pi, 100) # azimuth
phi, theta = np.meshgrid(phi, theta)
# Cartesian coordinates for the unit sphere
x = np.sin(phi) * np.cos(theta)
y = np.sin(phi) * np.sin(theta)
z = np.cos(phi)
# Create a figure to hold three subplots in one row
fig = plt.figure(figsize=(18, 6))
fig.suptitle("First Three Spherical Harmonics", fontsize=16)
for i, (m, l) in enumerate(harmonics, start=1):
# Calculate the spherical harmonic Y(l,m) and normalize to [0, 1] for color mapping
fcolors = sph_harm(m, l, theta, phi).real
fcolors_normalized = (fcolors - fcolors.min()) / (fcolors.max() - fcolors.min())
# Create a subplot for each (m, l) pair in one row
ax = fig.add_subplot(1, 3, i, projection='3d')
ax.plot_surface(x, y, z, rstride=1, cstride=1, facecolors=cm.seismic(fcolors_normalized),
linewidth=0, antialiased=False)
# Customize each subplot
ax.set_title(f"$Y_{{{l},{m}}}$", fontsize=14)
ax.set_box_aspect([1, 1, 1]) # Ensures spherical aspect ratio
ax.set_axis_off() # Turn off axes for clarity
# Adjust layout for a clear view of all subplots in one row
plt.tight_layout(rect=[0, 0, 1, 0.95])
plt.show()
Show code cell source
import matplotlib.pyplot as plt
from matplotlib import cm
import numpy as np
from scipy.special import sph_harm
from mpl_toolkits.mplot3d import Axes3D
# Define the range of m and l values for the first three spherical harmonics
harmonics = [(1, 1), (1, 2), (1, 3)] # List of (m, l) pairs to plot
# Define theta and phi grids
phi = np.linspace(0, np.pi, 100) # colatitude
theta = np.linspace(0, 2 * np.pi, 100) # azimuth
phi, theta = np.meshgrid(phi, theta)
# Cartesian coordinates for the unit sphere
x = np.sin(phi) * np.cos(theta)
y = np.sin(phi) * np.sin(theta)
z = np.cos(phi)
# Create a figure to hold three subplots in one row
fig = plt.figure(figsize=(18, 6))
fig.suptitle("First Three Spherical Harmonics", fontsize=16)
for i, (m, l) in enumerate(harmonics, start=1):
# Calculate the spherical harmonic Y(l,m) and normalize to [0, 1] for color mapping
fcolors = sph_harm(m, l, theta, phi).real
fcolors_normalized = (fcolors - fcolors.min()) / (fcolors.max() - fcolors.min())
# Create a subplot for each (m, l) pair in one row
ax = fig.add_subplot(1, 3, i, projection='3d')
ax.plot_surface(x, y, z, rstride=1, cstride=1, facecolors=cm.seismic(fcolors_normalized),
linewidth=0, antialiased=False)
# Customize each subplot
ax.set_title(f"$Y_{{{l},{m}}}$", fontsize=14)
ax.set_box_aspect([1, 1, 1]) # Ensures spherical aspect ratio
ax.set_axis_off() # Turn off axes for clarity
# Adjust layout for a clear view of all subplots in one row
plt.tight_layout(rect=[0, 0, 1, 0.95])
plt.show()
Show code cell source
import numpy as np
import plotly.graph_objects as go
from scipy.special import sph_harm
# Define the range of m and l values for the first three spherical harmonics
harmonics = [(0, 2), (1, 2), (-1, 2)] # List of (m, l) pairs to plot
# Define theta and phi grids
phi = np.linspace(0, np.pi, 100) # colatitude
theta = np.linspace(0, 2 * np.pi, 100) # azimuth
phi, theta = np.meshgrid(phi, theta)
# Cartesian coordinates for the unit sphere
x = np.sin(phi) * np.cos(theta)
y = np.sin(phi) * np.sin(theta)
z = np.cos(phi)
# Create a figure to hold multiple subplots in separate scenes
fig = go.Figure()
# Loop over each harmonic and create a separate subplot
for i, (m, l) in enumerate(harmonics, start=1):
# Calculate the spherical harmonic Y(l, m) and normalize it to [0, 1]
fcolors = sph_harm(m, l, theta, phi).real
fcolors_normalized = (fcolors - fcolors.min()) / (fcolors.max() - fcolors.min())
# Add the spherical harmonic to the figure as a surface in a new scene
fig.add_trace(go.Surface(
x=x, y=y, z=z,
surfacecolor=fcolors_normalized,
colorscale='rdbu',
showscale=False,
name=f"$Y_{{{l},{m}}}$",
scene=f'scene{i}' # Assign each plot to a different scene
))
# Update layout to arrange scenes in a row and add titles as annotations
fig.update_layout(
title="First Three Spherical Harmonics",
scene=dict(domain=dict(x=[0, 0.33]), xaxis=dict(visible=False), yaxis=dict(visible=False), zaxis=dict(visible=False), aspectmode='cube'),
scene2=dict(domain=dict(x=[0.33, 0.66]), xaxis=dict(visible=False), yaxis=dict(visible=False), zaxis=dict(visible=False), aspectmode='cube'),
scene3=dict(domain=dict(x=[0.66, 1]), xaxis=dict(visible=False), yaxis=dict(visible=False), zaxis=dict(visible=False), aspectmode='cube'),
annotations=[
dict(text="$Y_{2,0}$", x=0.16, y=1.05, showarrow=False, xref="paper", yref="paper", font=dict(size=14)),
dict(text="$Y_{2,1}$", x=0.5, y=1.05, showarrow=False, xref="paper", yref="paper", font=dict(size=14)),
dict(text="$Y_{2,-1}$", x=0.83, y=1.05, showarrow=False, xref="paper", yref="paper", font=dict(size=14))
]
)
# Display the figure
fig.show()